package com.ljx.designMode.strategy;

import java.util.Optional;

/**
 * @author LJX
 * @Description: TODO
 * @Date: 2022/11/10 16:19
 * @Version 1.0
 */

/**
 * 将类中经常改变或者可能改变的部分提取出来作为一个抽象策略接口
 * 然后在类中包含这个抽象接口策略的对象实例，这样这个类在运行的时候就可以随意调用
 * 实现类这个抽象策略接口的实现类（即具体策略类）
 */
public class StrategyTest {
	public static void main(String[] args) {
		ConText conText = new ConText(new AddOpration());
		int yunsuan = conText.yunsuan(12, 12);
		System.out.println(yunsuan);
	}
}

interface Strategy{
	int opration(int a,int b);
}

class AddOpration implements Strategy{
	@Override
	public int opration(int a, int b) {
		return a+b;
	}
}

class SubtractOpration implements Strategy{
	@Override
	public int opration(int a, int b) {
		return a-b;
	}
}

class ConText{
	private Strategy strategy;

	public ConText(Strategy strategy) {
		this.strategy = strategy;
	}

	public int  yunsuan(int a, int b){

		return strategy.opration(a,b);
	}
}